package ctr.stage;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JOptionPane;

import jdbc.Connexion;
import metier.Stage;
import metier.jdbc.StageJdbc;
import vue.MenuControle;
import vue.stage.JPanModifStage;
import configuration.Constante;
import configuration.MessageAppli;

public class GestModifStage implements ActionListener{
	
	private JPanModifStage jPanModifStage;

	/**
	 * Constructeur permettant d'avoir accès au jPan pour acceder à la comboBox.
	 * @param jPanSuppStage
	 */
	public GestModifStage(JPanModifStage jPanModifStage) {
		this.jPanModifStage = jPanModifStage;
	}
	
	@Override
	public void actionPerformed(ActionEvent actionEvent) {
		
		if (actionEvent.getSource() instanceof JButton) {
			String nouveauNom = jPanModifStage.getJtf_NomStage().getText();
			try {
				// Test du nom du stage.
				if ( "".equals(nouveauNom)){
					throw new Exception(MessageAppli.MSG_REMPLIR_CHAMPS);
				}else if (nouveauNom.length() > 30){
					throw new Exception(MessageAppli.MSG_CHAMPS_MAX + "30");
				}else if (!nouveauNom.matches(Constante.REGEX_ALPHANUM)) {
					throw new Exception(MessageAppli.MSG_CHAMPS_ALPHANUM);
				}
				
				if ( nouveauNom != null && !"".equals(nouveauNom)){
					Stage stage = (Stage) jPanModifStage.getjComboBox().getSelectedItem();
					// Recherche si un stage correspond déjà au nouveau nom renseigné. 
					if ( !StageJdbc.stageExisteByNom(Connexion.getConnexion(), nouveauNom)){
						// TODO recheche de la categorie.
						if ( StageJdbc.modifier(Connexion.getConnexion(), stage)){
							JOptionPane.showMessageDialog(jPanModifStage, MessageAppli.MSG_STAGE_MODIFICATION_OK, MessageAppli.MSG_TITRE_INFO, JOptionPane.INFORMATION_MESSAGE);
						}else{
							throw new Exception( MessageAppli.MSG_STAGE_MODIFICATION_OK);
						}
					}else{
						throw new Exception( MessageAppli.MSG_STAGE_DEJA_EXISTANT);
					}
					MenuControle.afficherPan(new JPanModifStage("Modifier stage"));
				}else{
					throw new Exception( MessageAppli.MSG_REMPLIR_CHAMPS);
				}
			} catch (Exception e) {
				e.printStackTrace();
				JOptionPane.showMessageDialog(jPanModifStage, e.getMessage(), MessageAppli.MSG_TITRE_INFO, JOptionPane.WARNING_MESSAGE);
			}
		}
	}
}